<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>物链域名网</title>
<style type="text/css">
#Layer1 {
	position:absolute;
	width:100%;
	height:40px;
	z-index:1;
	top: 0px;
	left: 0px;
	background-color: #00A2E9;
}
a.gray {color:#999999; text-decoration:none}
a.gray:hover {color:#CCCCCC; text-decoration:none}
.STYLE1 {
	color: #999999;
	font-size: 12px;
}
.STYLE9 {font-size: 16px; color: #000000; font-weight: bold; }
</style>
</head>
<body>
<div id="Layer1">
  <div align="center">
    <table width="950" height="40" border="0" align="center" bgcolor="#00A2E9">
        <tr>
		  <td width="190" align="center"><span class="STYLE2"><a href="http://hsav.com/">酷唱首页</a></span></td>
          <td width="190" align="center"><span class="STYLE2"><a href="index.htm">物链首页</a></span></td>
		  <td width="190" align="center"><span class="STYLE2">动态域名使用教程</span></td>
		  <td width="190" align="center"><span class="STYLE2"><a href="device.htm">设备使用教程</a></span></td>
        </tr>
    </table>
  </div>
</div>

<table width="950" border="0" align="center">

<tr><table width="1100" border="0" align="center">
	<tr>
		<td>&nbsp;</td>
	</tr>
		<tr>
		<td>&nbsp;</td>
	</tr>
	<tr>
		<td align="left"><span class="STYLE9">动态域名可以做什么？</span></td>
	</tr>
	<tr>
		<td><div align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;动态域名当前主要应用在路由器、网络摄像机、带网络监控的硬盘录像机、视频采集卡、企业管理ERP软件、SF软件服务端以及其他所有需要进行网络远程访问的应用中。其目的是建立网络服务，如WEB服务、FTP服务、网络视频流服务等等。有了动态域名，我们会发现自己可以拥有自己的WEB服务器、FTP服务器、Email服务器。而且还完全掌握控制自己的服务器，而不必担心由于服务器托管造成关键数据的不安全。在电脑普及环境下，个人电脑也可以搭建服务器。特别是当今网络远程实时观看设备的发展，极大地促进了动态域名的应用。</div></td>
	</tr>
	
	
	<tr>
		<td>&nbsp;</td>
	</tr>
	<tr>
		<td align="left"><span class="STYLE9">指令键值对的定义解析</span></td>
	</tr>
	<tr><td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;键值对之间用&分隔</td></tr>
	<tr><td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;键值对的构成是键名（key）以及索引的对象键值（value）</td></tr>
	<tr>
		<td>&nbsp;</td>
	</tr>
	<tr>
		<td>发送登录指令例子（有键值对）：ct:ls&an:66061.iotlink.ip71.cn&pw:4512</td>
	</tr>
	<tr><td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ct为指令类型（Command Type）</td></tr>
	<tr><td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ls为登录到服务器（Login to Server）</td></tr>
	<tr><td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;an为账号（Account Name）</td></tr>
	<tr><td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pw为密码（Pass Word）</td></tr>
		
	<tr>
		<td>&nbsp;</td>
	</tr>
	<tr>
		<td>接收登录指令例子（只有键值）：ls&ok&120&sw989a1r</td>
	</tr>
	<tr><td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ls为登录到服务器（Login to Server）</td></tr>
	<tr><td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ok为成功</td></tr>
	<tr><td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;120为心跳包间隔时间</td></tr>		
	<tr><td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sw989a1r为登录令牌值（每次登录都不一样）</td></tr>	
	
	<tr>
		<td>&nbsp;</td>
	</tr>
	<tr>
		<td>发送心跳指令例子（有键值对）：ct:sh&ps:c&&nbsp;lt:sw989a1r</td>
	</tr>
	<tr><td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ct为指令类型（Command Type）</td></tr>
	<tr><td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sh为同步心跳（Sync Heartbeat）</td></tr>	
	<tr><td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ps为数据包序列（Packet Sequence）</td></tr>
	<tr><td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;c为数据包序列值（每次登录都不一样）</td></tr>
	<tr><td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lt为登录令牌（Login Token）</td></tr>	
	<tr><td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sw989a1r为登录令牌值（每次登录都不一样）</td></tr>		
	
	<tr>
		<td>&nbsp;</td>
	</tr>
	<tr>
		<td>接收心跳指令例子（只有键值）：sh&ok&113.116.51.62</td>
	</tr>
	<tr><td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sh为同步心跳（Sync Heartbeat）</td></tr>	
	<tr><td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ok为成功</td></tr>
	<tr><td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;113.116.51.62为本机的公网网络IP地址</td></tr>	
	
	<tr>
		<td>&nbsp;</td>
	</tr>
	<tr>
		<td>接收登录失败时例子（只有键值）：ls&e5</td>
	</tr>
	<tr>
		<td>接收心跳失败时例子（只有键值）：sh&e9</td>
	</tr>
	<tr><td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ls为登录到服务器（Login to Server）</td></tr>
	<tr><td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sh为同步心跳（Sync Heartbeat）</td></tr>	
	<tr><td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e1为一般出错</td></tr>
	<tr><td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e2为指令格式不对</td></tr>	
	<tr><td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e3为参数出错</td></tr>
	<tr><td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e4为账号名出错</td></tr>	
	<tr><td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e5为账号密码出错</td></tr>
	<tr><td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e6为电器设备账号名出错</td></tr>	
	<tr><td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e7为账号访问码出错</td></tr>
	<tr><td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e9为登录令牌或访问令牌出错</td></tr>	
	
	<tr>
		<td>&nbsp;</td>
	</tr>
	<tr>
		<td><span class="STYLE9">服务器ip地址和服务器端口来源：113.87.90.13:6211</span></td>
	</tr>
	<tr>
		<td>1.打开电脑的命令提示符，然后输入“ping i.ip71.cn”，按回车键，得到服务器的地址113.87.90.13</td>
	</tr>
	<tr>
		<td align="center"><img src="img/cmd_1.jpg"/></td>
	</tr>
	<tr>
		<td>2.然后输入“ping p.ip71.cn”，按回车键，得到一个数组</td>
	</tr>
	<tr>
		<td align="center"><img src="img/cmd_2.jpg"/></td>
	</tr>
	<tr>
		<td>3.将数组的67和24分别转成十六进制的数值，得到43和18，再把43和18组成一个十六进制的数1843，最后把十六进制的1843转
成十进制的数值，就能得出端口为6211。</td>
	</tr>
	
	<tr>
		<td>&nbsp;</td>
	</tr>
	<tr>
		<td align="left"><span class="STYLE9">OpenDdns的使用</span></td>
	</tr>
	<tr>
		<td>1.打开电脑的命令提示符，找到“OpenDdns.exe”保存的路径，然后输入域名的账号和密码，按回车键发送登录信息</td>
	</tr>
	<tr>
		<td align="center"><img src="img/cmd_Ddns_1.jpg"/></td>
	</tr>
	<tr>
		<td>2.得到服务器返回的登录结果，还有本机的网络IP地址</td>
	</tr>
	<tr>
		<td align="center"><img src="img/cmd_Ddns_2.jpg"/></td>
	</tr>
	
	<tr>
		<td>&nbsp;</td>
	</tr>	
	<tr>
		<td><a href="download/OpenDdns.c">3.OpenDdns.c的例子，点击参看</a></td>
	</tr>
	<tr><td>
		int main(int argc, char* argv[]) {<br />
			&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;WSADATA wSAData;<br />
			&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;uint32_t svrIp;<br />
			&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;uint16_t svrPort;<br />
			&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SOCKET udp;<br />
			&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;uint8_t* ip = (uint8_t*)&svrIp;<br />		
			&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (WSAStartup(0x0101, &wSAData) != 0) {                // 初始化网络<br />
				&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf("初始化网络出错\r\n");<br />
				&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return 1;<br />
			&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
			&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (!getServerIp(&svrIp, &svrPort)) {                   // 获取物链域名服务器IP<br />
				&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf("获取物链域名服务器IP出错\r\n");<br />
				&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return 1;<br />
			&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
			&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf("获取物链域名服务器IP(%d.%d.%d.%d:%d)成功\r\n", ip[0], ip[1], ip[2], ip[3], svrPort);<br />
			&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (argc < 3) {                                         // 没有输入域名账号名及密码<br />
				&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf("没有输入域名账号名及密码，至少需要3个参数，现在只有%d个参数\r\n", argc);<br />
				&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return 1;<br />
			&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
			&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;udp = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);         // 创建必要网络参数<br />
			&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (udp != SOCKET_ERROR) {  //创建必要网络参数<br />
				&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;uint32_t time;<br />
				&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;char token[16];<br />
				&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SOCKADDR_IN addr = { 0 };<br />
				&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;addr.sin_family = AF_INET;<br />
				&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;addr.sin_addr.s_addr = svrIp;<br />
				&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;addr.sin_port = htons(svrPort);<br />
				&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (LoginToServer(udp, &addr, argv[1], argv[2], token, &time)) {<br />
					&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;char outIp[16];<br />
					&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf("登录物链域名服务器(token:%s 间隔时间:%d秒)成功\r\n", token, time);<br />
					&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (SyncHeartbeat(udp, &addr, token, outIp)) {<br />
						&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf("获得本机的网络IP为：%s\r\n", outIp);<br />
					&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
				&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
				&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;WSACleanup();<br />
				&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return 0;<br />
			&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
			&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;WSACleanup();<br />
			&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return 1;<br />
		}<br />
	</td></tr>
	
</table></tr>

	
	<tr><table width="950" border="0" align="center">
	<tr>
		<td>&nbsp;</td>
	</tr>
	<tr align="center">
		<td ><a href="download/OpenDdns.zip" class="STYLE1">
		<input type="button" style="height:60px;width:250px;background:#dd3a5f;color:#FFFFFF" value="下载OpenDdns.exe和OpenDdns.c"></a></td>
		<td ><a href="evid.htm" target="_blank" class="STYLE1">
		<input type="button" style="height:60px;width:250px;background:#dd3a5f;color:#FFFFFF" value="获取测试账号/下载IotLinkSdk.exe"></a></td>
		<td ><a href="http://ip71.cn/user.htm" target="_blank" class="STYLE1">
		<input type="button" style="height:60px;width:250px;background:#dd3a5f;color:#FFFFFF" value="网页登录/注册账号"></a></td>
	</tr>
	<tr>
		<td height="107" align="center" colspan="3">
		<div class="STYLE1"><a href="https://beian.miit.gov.cn/" target="_blank" class="gray">粤ICP备05035725号</a>丨2002-2023深圳市酷唱科技有限公司 版权所有</div></td>
	</tr>
	</table></tr>
	
</table>
</body>
</html>